Nginx代理webSocket经常中断的解决方案, 如何保持长连接 | 您所在的位置:网站首页 › websocket 频繁断开 › Nginx代理webSocket经常中断的解决方案, 如何保持长连接 |
Nginx代理webSocket经常中断的解决方案, 如何保持长连接 想看解决的,直接 ctrl+f搜索关键字‘配置点’ 开始前交代(想看原因的看这个,个人观点,不代表正确) 解说:今天用nginx反代通讯项目,发现平均1分钟左右,就会出现webSocket连接中断,然后查看了一下,是nginx出现的问题。 原因是: nginx等待你 第一次通讯和第二次通讯的时间差,超过了它设定的最大等待时间,简单来说就是,超时,所以就啪的一声断了,开始上解决步骤。 解决方案一 其实只要配置nginx.conf的对应localhost里面的这几个参数就好1. proxy_connect_timeout; 2. proxy_read_timeout; 3. proxy_send_timeout; 解决方案二 发心跳包,原理就是在有效地再读时间内进行通讯,重新刷新再读时间备注:配置的位置为localhost,给出简略地址 http { server { location / { root html; index index.html index.htm; proxy_pass http://webscoket; proxy_http_version 1.1; proxy_connect_timeout 4s; #配置点1 proxy_read_timeout 60s; #配置点2,如果没效,可以考虑这个时间配置长一点 proxy_send_timeout 12s; #配置点3 proxy_set_header Upgrade $http_upgrade; #这是webSocket的配置,与此篇博客无关 proxy_set_header Connection "Upgrade"; #这是webSocket的配置,与此篇博客无关 } } } 关于配置2的解释备注:这个是服务器对你等待最大的时间,也就是说,当你webSocket使用nginx转发的时候,用上面的配置2来说,如果60秒内没有通讯,依然是会断开的,所以,你可以按照你的需求来设定 举例: 比如说,我设置了10分钟,那么如果我10分钟内有通讯,或者10分钟内有做心跳的话,是可以保持连接不中断的,详细看个人需求 原文地址http://www.bieryun.com/1765.html |
CopyRight 2018-2019 实验室设备网 版权所有 |